<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
		<meta http-equiv="content-language" content="en" />
		<meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://kuehne.cn")' />
		<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://dstress.kuehne.cn" r (SS~~000 1))' />
		<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://vancouver-webpages.com/VWP1.0/" l gen true comment "VWP1.0" by "webmastro@kuehne.cn" on "2004.09.21T01:30-0700" for "dstress.kuehne.cn" r (P 0 S 0 V 0 Com 0 Tol 0 Env 0 SF 0 Edu 0 Can 0 MC 0 Gam -1 ))' />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<title>DStress - D compiler test suite</title>
		<meta name="DC.Identifier" content="http://dstress.kuehne.cn/readme.html" />
		<link rel="stylesheet" type="text/css" href="./www/formate.css" />
		<meta name="DC.Format" content="text/html" />
		<meta name="DC.Type" content="Software" />
		<meta name="generator" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
		<meta name="author" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
		<meta name="DC.Creator" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
		<meta name="DC.Publisher" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
		<meta name="DC.Language" content="en" />
		<meta name="date" content="2006-05-14" />
		<meta name="DC.Date" content="2006-05-14" />
		<link rel="Report" href="./www/dstress.html" title="Report" />
		<link rel="Results" href="./www/results.html" />
		<link rel="copyright" href="./license.txt" />
		<link rel="author" href="./authors.txt" />
	</head>
	<body>

		<h2 align="center"><a id="top" name="top"></a>DStress - a D compiler test suite</h2><p align="center">&#169; 2004, 2005, 2006 Thomas K&#252;hne &lt;thomas [at] kuehne.cn&gt;</p>


		<h3><a name="abstract" id="abstract" href="#top">^</a> Abstract</h3>
		<blockquote><p>
			 DStress is a collection of bug tracking and language conformance test cases for the <a href="http://digitalmars.com/d/">D programming language</a>. This document describes the use of the testing framework. The test summary can be found at <a href="./www/dstress.html">http://dstress.kuehne.cn/www/dstress.html</a>.</p>
		</blockquote>

		<h3><a name="index" id="index" href="#top">^</a> Index</h3>
		<blockquote>
			<ol>
				<li><a href="#conditions">Conditions</a></li>
				<li><a href="#symbols">Symbols</a></li>
				<li><a href="#environment-settings">Environment Settings</a></li>
				<li><a href="#testcase-settings">Testcase Settings</a></li>
				<li><a href="#testing">Testing</a></li>
				<li><a href="#report-generation">Report Generation</a></li>
				<li><a href="#sourcecode-metadata">Sourcecode Metadata</a></li>
			</ol>
		</blockquote>

		<h3><a name="conditions" id="conditions" href="#top">^</a> Conditions</h3>
		<blockquote>
			<dl>
				<dt>Passed</dt>
				<dd><ol>
					<li>compiler return code zero</li>
					<li>no assertion was thrown</li>
					<li>return code of main is zero (applies only to the runtime tests)</li>
				</ol></dd>
				<dt>Failed</dt>
				<dd><ol>
					<li>compiler return code unequal zero</li>
					<li>linker return code unequal zero</li>
					<li>assertion was thrown</li>
					<li>return code of main isn't zero (applies only to the runtime tests)</li>
				</ol></dd>
				<dt>Error</dt>
				<dd><ol>
					<li>compiler segfaulted</li>
					<li>test case segfaulted</li>
					<li>unexpected compiler failure without source indication</li>
				</ol></dd>
			</dl>
		</blockquote>

		<h3><a name="symbols" id="symbols" href="#top">^</a> Symbols</h3>
		<blockquote>
			 <p>The symbols are the same as those used by the <a href="http://www.gnu.org/software/dejagnu/">DejaGnu</a> test framework.</p>
			<dl>
				<dt>PASS</dt>
					<dd>test case was expected to pass, and it did</dd>
				<dt>XPASS</dt>
					<dd>test case was expected to fail, but passed</dd>
				<dt>FAIL</dt>
					<dd>test case was expected to pass, but failed</dd>
				<dt>XFAIL</dt>
					<dd>test case was expected to fail, and it did</dd>
				<dt>ERROR</dt>
					<dd>compiler, linker or test case segfaulted</dd>
			</dl>
		</blockquote>

		<h3><a name="environment-settings" id="environment-settings" href="#top">^</a> Environment Settings</h3>
		<blockquote>
			<dl>
					<dt>DMD</dt>
						<dd>the D compiler, e.g.: <i>c:\dmd\bin\dmd.exe</i></dd>
						<dd>use the wrapper <i>gdmd</i> for the GDC compiler</dd>
						<dd>default value: <i>dmd</i></dd>
					<dt>GDB</dt>
						<dd>a debugger with gdb-like commands, e.g.: <i>/usr/local/bin/gdb</i></dd>
						<dd>default value: <i>gdb</i></dd>
						<dd>note: only used on POSIX operating systems (e.g. BSD, Linux, Unix)</dd>
			</dl>
		</blockquote>

		<h3><a name="testcase-settings" id="testcase-settings" href="#top">^</a> Testcase Settings</h3>
		<blockquote>
			<p>The settings starts with the end of one of the markers listed below and continues until the end of the line.</p>
			<dl>
				<dt>__DSTRESS_DFLAGS__</dt>
					<dd>additional compiler arguments</dd>
					<dd>default: <i>empty</i></dd>
				<dt>__DSTRESS_EFILE__</dt>
					<dd>expected failing source file</dd>
					<dd>default: if __DSTRESS_ELINE__ isn't empty <i>current source file</i>, else <i>empty</i></dd>
				<dt>__DSTRESS_ELINE__</dt>
					<dd>expected failing source line</dd>
					<dd>default: <i>empty</i></dd>
				<dt>__DSTRESS_TORTURE_BLOCK__</dt>
					<dd>don't execute those torture tests which contain this plain string</dd>
					<dd>default: <i>unset</i></dd>
				<dt>__DSTRESS_TORTURE_REQUIRE__</dt>
					<dd>execute only those torture tests which contain this plain string</dd>
					<dd>default: <i>unset</i></dd>
				<dt>__GDB_PATTERN__</dt>
					<dd>expected regular expression in GDB's output</dd>
					<dd>default: <i>empty</i></dd>
				<dt>__GDB_SCRIPT__</dt>
					<dd>GDB command sequence</dd>
					<dd>note: replace linebreaks by <i>\n</i></dd>
					<dd>default: <i>empty</i></dd>
			</dl>
		</blockquote>

		<h3><a name="testing" id="testing" href="#top">^</a> Testing</h3>
		<blockquote>
			<dl>
				<dt>Posix Systems: AIX, Apple, BSD, Linux, Unix</dt>
				<dd>
					<dl>
						<dt>Requirements</dt>
							<dd>a C compiler</dd>
							<dd><a href="./dstress.c">dstress.c</a></dd>
							<dd><a href="./crashRun.c">crashRun.c</a></dd>
							<dd>a D compiler</dd>
							<dd>GnuMake version 3.80 or later (optional)</dd>
						<dt>Step-by-Step (without GnuMake)</dt>
							<dd>
								<ol>
									<li>compile <i>dstress.c</i><blockquote><pre><span class="cmd">gcc -o dstress dstress.c</span></pre></blockquote></li>
									<li>compile <i>crashRun.c</i><blockquote><pre><span class="cmd">gcc -o crashRun crashRun.c</span></pre></blockquote></li>
									<li>test D compiler:<blockquote><pre><span class="cmd">./dstress compile compile/const_12.d</span></pre></blockquote></li>
									<li>test linker and shell:<blockquote><pre><span class="cmd">./dstress run run/main_02.d</span></pre></blockquote></li>
									<li>start testing:<blockquote><pre><span class="cmd">./dstress [torture-compile|torture-nocompile|torture-run|torture-norun] testfile.d 2&gt;&gt; log.txt &gt;&gt; results.txt</span></pre></blockquote></li>
								</ol>
							</dd>
						<dt>Step-by-Step (with GnuMake)</dt>
							<dd>
								<ol>
									<li>clean-up:<blockquote><pre><span class="cmd">make distclean</span></pre></blockquote></li>
									<li>start testing:<blockquote><pre><span class="cmd">make all > results</span></pre></blockquote></li>
								</ol>
							</dd>
					</dl>
				</dd>
				<dt>Windows Systems</dt>
				<dd>
					<dl>
						<dt>Requirements</dt>
							<dd>a C compiler</dd>
							<dd><a href="./dstress.c">dstress.c</a></dd>
							<dd>a D compiler</dd>
						<dt><a name="windows-restrictions" id="windows-restrictions"></a>Restrictions</dt>
							<dd>no eternal-loop protection</dd>
							<dd>no proper Access Violation detection</dd>
							<dd>Access Violations might cause pop-ups requiring human interaction</dd>
						<dt>Step-by-Step</dt>
							<dd>
								<ol>
									<li>make sure you understand the <a href="#windows-restrictions"> restrictions</a></li>
									<li>compile <i>dstress.c</i><blockquote><pre><span class="cmd">dmc -o dstress dstress.c</span></pre></blockquote></li>
									<li>test D compiler:<blockquote><pre><span class="cmd">dstress compile compile\const_12.d</span></pre></blockquote></li>
									<li>test linker and shell:<blockquote><pre><span class="cmd">dstress run run\main_02.d</span></pre></blockquote></li>
									<li>start testing:<blockquote><pre><span class="cmd">dstress [compile|nocompile|run|norun] testfile.d 2&gt;&gt; log.txt &gt;&gt; results.txt</span></pre></blockquote></li>
								</ol>
							</dd>
					</dl>
				</dd>
			</dl>
		</blockquote>

		<h3><a name="sourcecode-metadata" id="sourcecode-metadata" href="#top">^</a> Sourcecode Metadata</h3>
		<blockquote>
			<div>Metadata starts with one of the markers listed below and continues until the end of the line.</div>
			<dl>
				<dt>@author@</dt>
					<dd>the bug/testcase reporter</dd>
					<dd>common format: <i>Name &lt;email@host&gt;</i></dd>
				<dt>@date@</dt>
					<dd>first report date</dd>
					<dd>common format: <i>year-month-day</i></dd>
				<dt>@uri@</dt>
					<dd>the message id of the email/newsgroup message or the webpage</dd>
					<dd>common format: <i>news:msg-id@host</i> or <i>http://host/page</i></dd>
				<dt>@WARNING@</dt>
					<dd>marks testcases with external dependencies or architecture/compiler specific data</dd>
					<dd>common format: <i>descriptive text</i></dd>
			</dl>
		</blockquote>

		<div><br /><br /><hr /><a href='http://dstress.kuehne.cn/www/dstress.html'>http://dstress.kuehne.cn/readme.html</a>; 2006-08-16; <a href="mailto:webmastro@kuehne.cn">Webmaster</a></div>
	</body>
</html>
